package com.thoughtworks.inproctester.resteasy.tests; import com.thoughtworks.inproctester.jetty.HttpAppTester; import com.thoughtworks.inproctester.resteasy.InProcessClientExecutor; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import org.jboss.resteasy.client.ClientRequest; import org.jboss.resteasy.client.ClientResponse; import org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher; import org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap; import org.junit.AfterClass; import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Test; import javax.ws.rs.core.MediaType; public class InProcessResteasyTest { private ObjectMapper objectMapper = new ObjectMapper(); private static HttpAppTester httpAppTester; @BeforeClass public static void setUp() { httpAppTester = new HttpAppTester("/"); httpAppTester.setInitParameter("resteasy.resources", "com.thoughtworks.inproctester.resteasy.testapp.TestApplication"); httpAppTester.setInitParameter("resteasy.providers", "org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider"); httpAppTester.addEventListener(new ResteasyBootstrap()); httpAppTester.addServlet(HttpServletDispatcher.class, "/*"); httpAppTester.start(); } @AfterClass public static void tearDown() { httpAppTester.stop(); } @Test public void shouldAddResource() throws Exception { ClientRequest request = new ClientRequest("http://localhost/", new InProcessClientExecutor(httpAppTester)); JsonNode testResource = objectMapper.readValue("{\"name\":\"test\"}", JsonNode.class); ClientResponse<JsonNode> createResponse = request.body(MediaType.APPLICATION_JSON, testResource).post(JsonNode.class); Assert.assertEquals(201, createResponse.getStatus()); JsonNode entity = createResponse.getEntity(); Assert.assertEquals(testResource, entity); // JsonNode testResourceFromServer = webResource.uri(createResponse.getLocation()).accept(MediaType.APPLICATION_JSON).get(JsonNode.class); // Assert.assertEquals(testResource, testResourceFromServer); } @Test public void shouldGetResource() throws Exception { ClientRequest request = new ClientRequest("http://localhost/", new InProcessClientExecutor(httpAppTester)); JsonNode testResource = objectMapper.readValue("{\"name\":\"test\"}", JsonNode.class); ClientResponse<JsonNode> response = request.body(MediaType.APPLICATION_JSON, testResource).post(JsonNode.class); request = new ClientRequest(response.getLocation().getHref(), new InProcessClientExecutor(httpAppTester)); response = request.accept(MediaType.APPLICATION_JSON).get(JsonNode.class); Assert.assertEquals(200, response.getStatus()); JsonNode entity = response.getEntity(); Assert.assertEquals(testResource, entity); } }